/*
 * String.h
 *
 *  Created on: 09.12.2012
 *	  Author: caffeine
 */

#ifndef __LAMPE_STRING_H_
#define __LAMPE_STRING_H_

#include "types.h"
#include "config.h"

namespace lampe{
namespace str{
#ifndef NOT_USING_ICONV_LIB
lampe::String conv_charset(lampe::String from,lampe::String to,lampe::String text);
#endif
lampe::String str_replace(const lampe::String search, const lampe::String replace, lampe::String subject);
lampe::s32 findFirstCharNotInList(String str,String c);
lampe::s32 findLastCharNotInList(String str,String c);
lampe::String trim(String a);
s32 find(String str,String find,u32 pos);
String toLowerCase(String str);
String toUpperCase(String str);
bool isNumber(char a);
bool isNumber(String value);
#ifndef NOT_USING_MD5_LIB
s32 makeID(String value);
#endif
void split(String str,LAMPE_VECTOR_VENDOR<String>*list,char separator);
//LAMPE_VECTOR_VENDOR<String> split(String str,char separator);
String fromU62(u32 value);
String fromU32(u32 value);
String fromF32(f32 value);
String fromS32(s32 value);
s32 toI32(String value);
f32 toF32(String value);
u32 toU32(String value);
bool startWith(lampe::String str,lampe::String findStr);
bool endWith(lampe::String str,lampe::String findStr);

/**
 * Возвращяет форматированную строку. Работает аналогично
 * например методу printf
 *
 * @param fmt формат строки.
 * @param ... данные, которые нужно вывести
 **/
String format(const char*fmt,...);

const char *memstr (const char *where, const char *what, int Number);
bool mask_match (const char *str, const char *mask);


}//namespace str
}//namespace lampe


#endif /* __LAMPE_STRING_H_ */
